home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / comm / mail / YAM23src.lha / Source / extrasrc / getft.c < prev    next >
C/C++ Source or Header  |  2001-03-09  |  909b  |  46 lines

  1. #ifdef _DCC
  2. #include <sys/stat.h>
  3. int getft(const char *fn)
  4. {
  5.    struct stat st;
  6.  
  7.    if(stat(fn,&st)) return -1;
  8.  
  9.    return st.st_mtime;
  10. }
  11. #else
  12. #include <dos/dos.h>
  13. #include <dos/dostags.h>
  14. #include <proto/dos.h>
  15. #include "extra.h"
  16.  
  17. #ifdef __libnix__
  18. extern long __gmtoffset;
  19. #else
  20. #define __gmtoffset 0
  21. #endif
  22.  
  23. long getft(const char *name)
  24. {
  25.    struct FileInfoBlock *fib = AllocDosObject(DOS_FIB, NULL);
  26.    BPTR lock;
  27.    long ret = 0;
  28.    if (fib)
  29.    {
  30.       fib->fib_Date.ds_Days = 0;
  31.       fib->fib_Date.ds_Minute = 0;
  32.       fib->fib_Date.ds_Tick = 0;
  33.       if ((lock = Lock(name, ACCESS_READ)))
  34.       {
  35.         Examine(lock, fib);
  36.         UnLock(lock);
  37.       }
  38.       ret = ((fib->fib_Date.ds_Days + 2922) * 1440 +
  39.               fib->fib_Date.ds_Minute + __gmtoffset) * 60 +
  40.               fib->fib_Date.ds_Tick / TICKS_PER_SECOND;
  41.       FreeDosObject(DOS_FIB, fib);
  42.    }
  43.    return ret;
  44. }
  45. #endif /* _DCC */
  46.